package devaluator.functionality;
import java.util.ArrayList;
import java.util.List;


public class  ClassAnalyzer extends Analyzer{

	@Override
	/**
	 * Create separate list for class, interface and packages 
	 */
	public ArrayList<ArrayList<String>> process(List<String> inData) {
		int nClass=0, nInterface=0, nPackage=0; 
		
		ArrayList<String> classData= new ArrayList<String>();
		ArrayList<String> interfaceData = new ArrayList<String>();
		ArrayList<String> packageData = new ArrayList<String>();
		ArrayList<ArrayList<String>> combineData =  new ArrayList<ArrayList<String>>();

		String file="";
		boolean a=true; 
		for(int i=0; i<inData.size();i++){
			
			if(inData.get(i).contains("FILE:")){
				file=inData.get(i); 
				a=true; 
			}
			if(inData.get(i).contains("interface"))
			{	
				if(a){
					interfaceData.add("--------------------");
					interfaceData.add(file);	
				}
				nInterface++; 
				interfaceData.add(nInterface+")"+inData.get(i)); 
				a=false;
				
			}
			else if(inData.get(i).contains("package") || inData.get(i).contains("import")) 
			{	
				if(a){
					packageData.add("--------------------");
					packageData.add(file);
				}
				nPackage++;
				packageData.add(nPackage+")"+inData.get(i)); 
				a=false;
			}
			else{	
				if(inData.get(i).contains("FILE:")){
					file=inData.get(i); 
					a=true; 
				}
				else{
					if(a){
						classData.add("--------------------");
						classData.add(file);
						a=false; 
					}
					nClass++;
					classData.add(nClass+")"+inData.get(i)); 
				}
				
			}
		}
		classData.add("\n");
	    interfaceData.add("\n");
	    packageData.add("\n");
	    classData.add("\nTotal Classes: "+nClass);
	    interfaceData.add("\nTotal Interfaces: "+nInterface);
	    packageData.add("\nTotal Packages: "+nPackage);
	    
		combineData.add(classData);
		combineData.add(interfaceData);
		combineData.add(packageData);
		
		return combineData; 
	}

}
